<?php
//1.定义命名空间与本文件所在目录层级相同（app\home\controller）
//2.因为composer自动载入类的需要
//3.命名空间namespace之前不能有输出！
namespace app\admin\controller;

//1.引入框架核心目录中的View类
//2.用于载入模板文件及向模板文件传递数据
use houdunwang\view\View;

//1.引入扩展模型中Grade类
//2，用于去框架核心目录中的Base类（经过Model）执行其中操作数据库的方法
//3.起别名因为所引入的类的名称与该文件所定义的类名一致
use system\model\Grade as GradeModel;

//1.引入扩展模型中的Student类
//2.当删除班级时也将执行删除该班级下的所有学生数据
use system\model\Student;

//1.定义Grade类用于班级grade表的增删改查操作
//2.继承Common类用于判断用户是否已经登录了
//如果没有登录则需要登录才能操作
class Grade extends Common {

    //定义显示班级表数据的方法
    public function lists(){

        //1.调用Base类的中get方法获班级表的全部数据
        //2.结果以grade表的主键进行升序排序
        $data = GradeModel::get("asc");

        //1.载入模板文件调用显示所查询的数据
        //2.（模板文件传递查询的结果数据）
        return View::make()->with(compact("data"));
    }

    //定义增加班级的方法
    public function add(){
        if(IS_POST){
            //查询数据表中用户所输入的班级名称的数据
            $dbgname = GradeModel::where("gname='{$_POST['gname']}'")->get();
            //1.如果存在该数据则代表所输入的班级名称已经存在
            //2.需要重新输入
            if($dbgname){
                $this->message("已存在该名称的班级，请重新命名");
            }
            //1.如果所输入的班级名称还没有存在则向班级表grade中插入一条新的班级数据
            //2.成功后返回到班级列表页面并消息提示
            GradeModel::insert("gname='{$_POST['gname']}'");
            $this->setRedirect(u("lists"))->message("添加成功！");
        }
        //载入模板文件用于用户输入新的班级名称
        return View::make();
    }

    //定义删除班级的方法
    public function remove(){
        //1.获取要删除的班级的序号（grade表的主键值）
        //2.将作为执行sql语句的限制条件
        $pri = $_GET["gid"];
        //调用框架核心中的Base为的delete方法删除指定主键的数据
        GradeModel::delete($pri);
        //删除班级后也将该班级相关联的学生删除
        $aftRows = Student::e("DELETE FROM student WHERE gid={$pri}");
        //成功后消息提示并返回（班级列表页）
        $this->message("删除班级成功（共有{$aftRows}个学生被删除）");
    }

    //定义修改班级名称的方法
    public function modify(){
        //1.获取要修改的班级的序号（grade表的主键值）
        //2.将作为执行sql语句的限制条件
        $pri = $_GET["gid"];

        if(IS_POST){
            //查询数据表中用户所输入的班级名称的数据
            $dbgname = GradeModel::where("gname='{$_POST['gname']}'")->get();
            //1.如果存在该数据则代表所输入的班级名称已经存在
            //2.需要重新输入
            if($dbgname){
                $this->message("已存在该名称的班级，请重新命名");
            }
            //1.如果所输入的班级名称还没有存在则将原来的指定主键的班级名称改为用户输入的新的名称
            //2.成功后返回到班级列表页面并消息提示
            GradeModel::update($pri,"gname='{$_POST['gname']}'");
            $this->setRedirect(u("lists"))->message("修改成功！");
        }
        //1.获取旧的班级名称的数据
        //2.通过查询主键为所获取的get参数值作为限制条件查询到
       $oldGname = GradeModel::findToArray($pri);

        //1.载入模板文件向模板文件中传递旧的班级名称的数据
        //2.在模板文件中调用旧的班级名称数据显示
        return View::make()->with(compact("oldGname"));
    }


}